#ifndef GLWIDGET_H
#define GLWIDGET_H

#include <QObject>
#include <QWidget>
#include <QtOpenGLWidgets/QtOpenGLWidgets>
#include <QOpenGLFunctions_4_5_Core>


class GLWidget: public QOpenGLWidget, public QOpenGLFunctions_4_5_Core
{
public:
    GLWidget(QWidget* parent=nullptr);

protected:
    virtual void initializeGL() override;
    virtual void resizeGL(int w, int h) override;
    virtual void paintGL() override;

private:
    // 准备阶段 创建缓冲区
    void PreCreateBuffers();

    // 准备阶段 编译着色器
    void PreCompileShaders();

private:
    GLuint VAO; // 顶点数组对象
    GLuint VBO; // 顶点缓冲对象
    GLuint EBO; // 索引缓冲对象

    // shader
    std::unique_ptr<QOpenGLShaderProgram> pShaderProgram;
};

#endif // GLWIDGET_H
